<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/ajax_fn.js"></script>
</head>
<body>
    
</body>
<script>
//    Promise链式操作的本质   then 返回的是一个新的Promise实例化对象，后面的实例化对象一次按顺序等待前面的结果，如果状态为Fulfilled就继续传递，如果为Rejectd就会被catch捕获

// 回调函数的返回值 会作为数据传递出去

// 回调函数 的返回值 也是一个Promise实例化对象，则会根据该实例的状态改变自身实例的状态

// 复杂 版本 
    readText("../data/1.txt").then(function(text){          //成功时执行
        console.log(text);
        readText("../data/2.txt").then(function(text){          //成功时执行
            console.log(text);
            readText("../data/3.txt").then(function(text){
                console.log(text);
            }).catch( function (err) {      // 失败时执行
                console.log(err);
            });
        }).catch( function (err) {      // 失败时执行
            console.log(err);
        });
    }).catch( function (err) {      // 失败时执行
        console.log(err);
    });


// 简化版
    readText("../data/1.txt").then(function(text){          //成功时执行
        console.log(text);
        return readText("../data/2.txt");          
    }).then(function(text) {
        console.log(text);
        return readText("../data/3.txt");
    }).then(function(text){
        console.log(text);
    }).catch( function (err) {      // 失败时执行
        console.log(err);
    });


    function readText(url){
        var p = new Promise(function(resolve,reject) {
            $.ajax({
                type:"get",
                url,
                success(text){
                    resolve(text);
                }
            })
        })
        return p;
    };




</script>
</html>